package com.question.common.service;

import com.question.common.enums.DataIgnoreConvertEnum;
import com.question.common.model.dto.DataTypeConvertDTO;

import java.lang.annotation.Annotation;
import java.lang.reflect.Field;

/**
 * 数据转换
 *
 * @author star
 * @since 2023/9/11
 */
public interface IDataConvert {

    /**
     * 数据转换
     *
     * @param sourceFieldName 源属性
     * @param annotation      注解信息
     * @param value           源数据
     * @return String
     */
    String convert(String sourceFieldName, Annotation annotation, Object value);

    /**
     * 注册转换类型
     *
     * @param field 字段
     * @return Annotation
     */
    DataTypeConvertDTO confirmType(Field field);

    /**
     * 数据转换忽略
     *
     * @param ignoreEnum  方法注解信息
     * @param sourceField 字段信息
     * @return boolean
     */
    boolean isIgnore(DataIgnoreConvertEnum ignoreEnum, Field sourceField);

}
